<?php
/**
 * Created by PhpStorm.
 * User: rongxiang
 * Date: 16/5/6
 * Time: 上午11:42
 */
class Voice_codem extends CI_Model
{

    /**
     * 网关地址
     */
    static $gwUrl = 'http://hprpt2.eucp.b2m.cn:8080/sdk/SDKService?wsdl';


    /**
     * 序列号,请通过亿美销售人员获取
     */
    static $serialNumber = '8SDK-EMY-6699-RGTLS';

    /**
     * 密码,请通过亿美销售人员获取
     */
    static $password = '077546';

    /**
     * 登录后所持有的SESSION KEY，即可通过login方法时创建
     */
    static $sessionKey = '077546';

    /**
     * 连接超时时间，单位为秒
     */
    static $connectTimeOut = 2;

    /**
     * 远程信息读取超时时间，单位为秒
     */
    static $readTimeOut = 10;

    /**
    $proxyhost		可选，代理服务器地址，默认为 false ,则不使用代理服务器
    $proxyport		可选，代理服务器端口，默认为 false
    $proxyusername	可选，代理服务器用户名，默认为 false
    $proxypassword	可选，代理服务器密码，默认为 false
     */
    static $proxyhost = false;
    static $proxyport = false;
    static $proxyusername = false;
    static $proxypassword = false;



    // login();   //激活序列号
    // updatePassword();  //修改密码
    // logout();          //注销序列号
    // registDetailInfo();//注册企业信息
    // getEachFee();      //得到单价
    // getMO();           //接收短信
    // getVersion();      //得到版本号
    // sendSMS();         //发送短信
    // getBalance();      //得到余额
    // chargeUp();        //充值
    //sendVoice();        //发送短信验证码
    //----------------------------------------------------------------------
    // 注:
    // 1. 下面是各接口的使用用例，Client.php 还有每一个接口更详细的参数说明
    // 2. 凡是返回 $statusCode 的, 都是相关操作的状态码
    // 3. 由于php是弱类型语言，当服务端没返回时，也会等同认为 $statusCode=='0', 所以在判断时应该使用 if ($statusCode!=null && $statusCode==0)
    //----------------------------------------------------------------------
    function __construct()
    {
       $this->load->library('Client');
    }
    /**
     * 登录 用例
     */
    function login()
    {
        $client = new Client(self::$gwUrl,self::$serialNumber,self::$password,self::$sessionKey,self::$proxyhost,self::$proxyport,self::$proxyusername,self::$proxypassword,self::$connectTimeOut,self::$readTimeOut);
        /**
         * 发送向服务端的编码，如果本页面的编码为GBK，请使用GBK
         */
        $client->setOutgoingEncoding("UTF-8");
        /**
         * 下面的操作是产生随机6位数 session key
         * 注意: 如果要更换新的session key，则必须要求先成功执行 logout(注销操作)后才能更换
         * 我们建议 sesson key不用常变
         */
        //$sessionKey = $client->generateKey();
        //$statusCode = $client->login($sessionKey);

        $statusCode = $client->login();

        echo "处理状态码:".$statusCode."<br/>";
        if ($statusCode!=null && $statusCode=="0")
        {
            //登录成功，并且做保存 $sessionKey 的操作，用于以后相关操作的使用
            echo "登录成功, session key:".$client->getSessionKey()."<br/>";
        }else{
            //登录失败处理
            echo "登录失败,返回:".$statusCode;
        }

    }
    /**
     * 发送语音验证码  (注:此方法必须为已登录状态下方可操作)
     *
     * @param array $mobiles		手机号, 如 array('159xxxxxxxx'),如果需要多个手机号群发,如 array('159xxxxxxxx','159xxxxxxx2')
     * @param string $content		语音验证码内容，最多不要超过6个字符，最少不要小于4个字符;字符必须为0至9的全英文半角数字字符
     * @param string $sendTime		定时发送时间，格式为 yyyymmddHHiiss, 即为 年年年年月月日日时时分分秒秒,例如:20090504111010 代表2009年5月4日 11时10分10秒
     * 								如果不需要定时发送，请为'' (默认)
     *
     * @param string $addSerial 	扩展号, 默认为 ''，在此处没有实际意义可填写为''
     * @param string $charset 		内容字符集, 默认GBK
     * @param int $priority 		优先级, 默认5
     * @param int $priority 		语音验证码序列ID(唯一的正整数)
     * @return int 操作结果状态码
     */
    function sendVoice($mobiles=array(),$content)
    {

        $client = new Client(self::$gwUrl,self::$serialNumber,self::$password,self::$sessionKey,self::$proxyhost,self::$proxyport,self::$proxyusername,self::$proxypassword,self::$connectTimeOut,self::$readTimeOut);
        /**
         * 发送向服务端的编码，如果本页面的编码为GBK，请使用GBK
         */
        $client->setOutgoingEncoding("UTF-8");
        $res =  $client->sendVoice(array($mobiles),$content,'','','UTF-8');
        return $res;
    }

}
